const bcryptjs = require("bcryptjs")
// 导入数据库操作模块
const { addUser, findName, findId } = require("../model/user")
// 导入token
const { getToken, verToken } = require("../utils/useToken")

// 用户控制器
// 有着用户注册, 注销, 登录请求处理函数

// 用户注册
async function userReg(req, res, next) {
  let { username, password } = req.body

  // 密码加密
  password = bcryptjs.hashSync(password, 10)

  // 用户名密码加入数据库
  const result = await addUser(username, password)

  // 生成token,并带给用户
  const token = getToken(username)

  res.send({
    code: 1,
    data: result[0],
    token,
    message: "注册成功"
  })
}

// 用户登录
async function userLogin(req, res, next) {
  const { username, password } = req.body
  const result = await findName(username)
  // 登录成功,需要给用户返回一个token
  // 生成token,并带给用户
  const token = getToken(username)

  return res.send({
    code: 1,
    data: result,
    token,
    message: "登陆成功"
  })
}

// 用户信息获取
async function userInfo(req, res, next) {
  const { user, token } = req.body
  // 使用id找到对应用户
  const result = await findId(user._id)
  if (!result) {
    res.send({
      code: -3,
      message: "登录验证失败"
    })
  }
  res.send({
    code: 1,
    message: "获取用户信息成功",
    data: result
  })
}

module.exports = { userReg, userLogin, userInfo }